perm filename CMUIO.FAI[EXP,LCS] blob sn#153755 filedate 1975-07-17 generic text, type T, neo UTF8
00100		TITLE CMUIO
00200		INTERNAL PUTFIL,FASTOUT,FINFIL
00210		INTERNAL ZBIT,GETTAP,TOTAPE,FINTAP,BACKSP,PUTMUS
00307	
00310		CH←12
00355		CH2←11
00400	
00500	;CALL PUTMUS(<FILE>)    (WILL PUT .MUS EXTENSION)
00600	
00700	PUTMUS:	0
00800		MOVE 0,@0(16)
00900		MOVEM FILNAM
01000		JSA 16,INTFIL
01100		MOVE 0,[SIXBIT/MUS/]
01200		JRST PFL
01300	
04900	;CALL PUTFIL(<FILE>)
05000	
05100	PUTFIL:	0
05200		MOVE 0,@0(16)
05300		MOVEM FILNAM
05400		JSA 16,INTFIL
05500		MOVE 0,[SIXBIT/DMD/]
05600	PFL:	MOVEM 0,DIR+1
05700		SETZM DIR+2
05800		SETZM DIR+3
05900		ENTER CH,DIR
06000		0
06100		JRA 16,1(16)
06200	
06300	
06400	INTFIL:	0
06500		MOVEI REGS
06600		BLT REGS+3
06700		INIT CH,17
06800		SIXBIT/DSK/
06900		0
07000		0
07100		MOVE 0,FILNAM#
07200		MOVEM 0,FN#
07300		MOVE 1,[POINT 7,FN]
07400		MOVE 2,[POINT 6,DIR]
07500		SETZM DIR
07600		MOVEI 3,5
07700	INTF1:	ILDB 0,1
07800		CAIN 0," "
07900		JRST INTF2
08000		SUBI 0,40
08100		IDPB 0,2
08200		SOJG 3,INTF1
08300	INTF2:	HRLZI REGS
08400		BLT 3
08500		JRA 16,0(16)
08600	
08700	INTFI2:	0
08800		MOVEI REGS
08900		BLT REGS+3
09000		INIT CH2,617
09100		SIXBIT/MTA0/
09200		0
09300		0
09400		MOVE 0,FILNA2#
09500		MOVEM 0,FN2#
09600		MOVE 1,[POINT 7,FN2]
09700		MOVE 2,[POINT 6,DIR]
09800		SETZM DIR
09900		MOVEI 3,5
10000		JRST INTF1
10100	
16000	
16050	DIR:	BLOCK 4
16100	
16200	;CALL FASTOUT(<ARRAY>,<NO. OF WORDS>)
16300	
16400	FASTOUT: 0
16500		HRRZ 0,0(16)
16600		SUBI 0,1
16700		MOVEM 0,COM
16800		MOVN 0,@1(16)
16900		HRLM 0,COM
17000		OUTPUT CH,COM
17100		STATZ CH,740000
17200		0
17300		JRA 16,2(16)
17400	
17700	
17800	
17900	;CALL FINFIL
18000	
18100	FINFIL:	0
18200		CLOSE CH,0
18300		STATZ CH,740000
18400		0
18500		RELEASE CH,0
18600		JRA 16,0(16)
18700	
19600	
20300	
20400		;'CH' IS USED IN GETTAP, TOTAPE
20500		;'CH2' "  "    " MTA1, INMTA1, GETFI2, FASTI2
20600	
20900	
21800	;CALL GETTAP
21900	
22000	GETTAP:	0	;USES  TOTAPE, CH.  READS OR WRITES MTA0.
22100		INIT CH,617
22200		SIXBIT/MTA0/
22300		0
22400		HALT
22500		JRA 16,0(16)
22600	
22700	;CALL TOTAPE(<ARRAY>,<NO.OF WORDS>)  WRITES ON MAGTAPE
22800	
22900	TOTAPE:	0
23000		HRRZ 0,0(16)
23100		SUBI 0,1
23200		MOVEM 0,COM
23300		MOVN 0,@1(16)
23400		HRLM 0,COM
23500		OUTPUT CH,COM
23600		STATZ CH,740000
23700		0
23800		JRA 16,2(16)
23900	
24000	; CALL FINTAP
24100	
24200	FINTAP:	0
24300		CLOSE CH,0
24400		STATZ CH,740000
24500		0
24600		RELEASE CH,0
24700		JRA 16,0(16)
24800	
24900	; CALL BACKSP
25000	
25100	BACKSP:	0
25200		INIT CH,617
25300		SIXBIT/MTA0/
25400		0
25500		HALT
25600		MTAPE CH,7
25700		JRA 16,0(16)
25800	
25900	; CALL ZBIT(<INPUT ARRAY>,<OUTPUT ARRAY>)
26000	;              (256 WDS)     (512 WDS)
26100	
26200	ZBIT:	0
26300		MOVE 2,(16)
26400		MOVE 1,1(16)
26500		HRLI 2,-=256
26600	
26700	LOOP:	HLRE 0,(2)
26800		FSC 0,233	;FLOAT IT
26900		MOVEM 0,(1)	; GETS 512 18-BIT SAMPLES OUT OF 256 WDS.
27000		HRRE 0,(2)
27100		FSC 0,233
27200		MOVEM 0,1(1)
27300		ADDI 1,2
27400		AOBJN 2,LOOP
27500		JRA 16,1(16)
27600	
27700	
27800		BLKS←=1
27900	REGS:	BLOCK 20
28000	
34200	COM:	OCT 0,0
34300	;;;COM1:	0
34400	BLKNUM:	0
34500	
34600	END